/**
 **@constructor {Page} Create
 ** represent the whole page
 **/
define([
    '../framework/pieces/header',
    '../framework/pieces/body',
    './hashManager2',
], function(header, body, HM) {
    extend(Main, Page); //继承 保持和 class-instance 分离语言的继承感觉。 放在最上面，因为
    function Main() {
        var _this = this;
        var _super = arguments.callee.parent;
        /**
         ** 初始化页面配置
         **/
        this.init = function() {
            this._DOM = document; //当前这个类 hold住的前端引用
            this.children = [header, body]; //获得 piece 实例的引用
            //监听来自网络层的消息
            this._DOM.addEventListener("NEW_MSG", function(e) {
                _this.notify(e.data); //这个地方会去调用父类的 notify方法 ，Page
            });

            this._DOM.addEventListener("SHRINK_EXPAND", function(e) {
                body.update(e);
            });
            HM.init();
        };
    }
    return new Main();
});
